/**
 * @description 解析 HTTP Cookie 标头字符串，返回所有 cookie 名称-值对的对象。
 * @param {*} str 
 * @returns 
 */
const parseCookie = str =>
  str
    .split(';')   // 以';'分割键值对成数组
    .map(v => v.split('='))   // 将数组中键值对的键与值分开成二维数组
    .reduce((acc, v) => {
      // 解析每一个键值对的键与值，并设置对应对象值
      acc[decodeURIComponent(v[0].trim())] = decodeURIComponent(v[1].trim());
      return acc;
    }, {}); // 创建空对象

// 例子
console.log(parseCookie('foo=bar; equation=E%3Dmc%5E2'));
// { foo: 'bar', equation: 'E=mc^2' }
